﻿package com.Galaxisfarm {
	// Flixel
	import com.adamatomic.flixel.*;
	
	public class GameState extends FlxState {
		// Cursor padrão
		[Embed(source = "../../data/cursor.png")] protected var ImgCursor:Class;
		// Imagem da borda
		[Embed(source = "../../data/border.png")] protected var ImgBorder:Class;
		// Imagem versão beta
		[Embed(source = "../../data/version_beta.png")] protected var ImgVersionBeta:Class;
		
		// Camada do palco
		protected static var _lyr_stage:FlxLayer;
		// Camada de sprites
		protected static var _lyr_sprites:FlxLayer;
		// Armazena a dialog box ativa
		protected var _dialog_box:DialogBox;
		
		public function GameState():void {
			_lyr_stage = new FlxLayer;
			_lyr_sprites = new FlxLayer;
			
			// Adiciona a borda
			_lyr_stage.add(new FlxSprite(ImgBorder));
			
			// Adiciona a camada do palco
			this.add(_lyr_stage);
			this.add(_lyr_sprites);
			
			// Define o cursor do mouse
			FlxG.setCursor(ImgCursor);
			
			_dialog_box = null;
		}
		
		// Retorna a camada de sprites
		public static function getLyrSprites():FlxLayer {
			return _lyr_sprites;
		}
		
		// Retorna a camada do palco
		public static function getLyrStage():FlxLayer {
			return _lyr_stage;
		}
		
		protected function addVersionBeta():void {
			// Imagem versão beta
			_lyr_sprites.add(new FlxSprite(ImgVersionBeta, 534, 23));
		}
		
		// Cria uma nova dialog box de error
		protected function dialogBoxError(Message:String):void {
			if (!hasDialogBox()) {
				_dialog_box = new DialogBox(Message, false);
				_dialog_box.createDefaultButtonOK();
			}
		}
		
		// Indica se existe uma dialog box ativa
		public function hasDialogBox():Boolean {
			if (_dialog_box != null)
				if (_dialog_box.getComponents().length > 0)
					return true;
			
			return false;
		}
		
		// Cria uma nova dialog box
		// pode ser usado de forma mais flexível
		protected function dialogBox(Message:String):void {
			if (!hasDialogBox()) {
				_dialog_box = new DialogBox(Message);
			}
		}
		
		// Cria uma nova dialog box
		// com o comportamento já bem definido
		// somente para exibir mensagens e desaparecer
		// quando for clicado no botão ok
		protected function dialogBoxDefault(Message:String):void {
			if (!hasDialogBox()) {
				dialogBox(Message);
				_dialog_box.createDefaultButtonOK();
			}
		}
	}
}